A network typically includes multiple access points (e.g., routers and servers) that switch and/or route data from a source to a destination along various transmission paths. Information is typically transmitted across networks such as the Internet as data packets. For example, when a file (e.g., e-mail, graphics, etc.) is sent from one node to another on a network, the file is divided into smaller data packets for more efficient transmission. The individual packets for a given file may travel different routes across one or more networks, with each packet containing both data and routing information. As such, a packet can be described as having a payload that contains the data, and a header that contains the routing information (e.g., a destination address).
A router is a device that determines the next network segment to which a packet is to be forwarded towards its destination. Routers, which can be positioned at points within a network and at points between networks, typically maintain tables of the available routes and their conditions for use to determine the best route between a source location and a destination location for a given packet. Indeed, a packet may travel through a number of network points having routers before arriving at its destination.
When a data packet arrives at the input of a router, several lookups are typically performed to determine the subsequent handling of the packet, as illustrated in FIG. 1. The lookups can include where to send the packet next (Next Hop), the quality of service requirement (QoS), the Ethernet port address, and so on. For example, consider a packet arriving at Router-A. Router-A determines whether the packet is destined for local servers connected directly to Router-A, or whether the packet should go to the next router (Router-B) towards its destination. Additionally, Router-A may assign a priority based on the destination address (DA) and the source address (SA) of the packet.
The packet header is typically parsed to extract information from different fields of the packet header to create different search keys associated with various different lookup operations. For example, a packet classification lookup can be performed to determine whether to allow or deny forwarding of the packet, a next hop lookup can be performed to determine whether the packet is meant for local servers or for Router-B, and a media access control (MAC) lookup can be performed to send the packet to the appropriate local server. Additional lookup operations can also be performed depending upon the network topology and/or routing requirements.
Many routers use one or more content addressable memory (CAM) devices to perform various lookup operations associated with routing packets across a network, and different lookup tables are typically stored in different groups of CAM blocks. For example, many CAM devices associated with a router include a first group of CAM blocks that store next hop routing information, a second group of CAM blocks that store packet classification information, a third group of CAM blocks that store MAC addresses, and/or other CAM blocks that store other information. Although CAM devices are effective in allowing different types of search operations to be quickly performed when routing packets, power consumption associated with performing multiple search operations in a CAM device can be significant. Indeed, as storage density and data throughput increase, so do power consumption and heat generation of associated CAM devices.
Thus, there is a need to reduce the power consumption associated with performing a number of different search operations in a CAM device.